// 方法1： 类型 + 方括号 表示法
let fib: number[] = [1, 1, 2, 3, 5];
// 注意：数组项中不允许出现其他的类型
// let fib2: number[] = [1, '1', 1, 2];//03ArrayType.ts(4,5): error TS2322: Type '(string | number)[]' is not assignable to type 'number[]'.

// 方法2： 数组泛型(generic)
let fib3: Array<number> = [1, 1, 2, 3, 5];

// 方法3：用接口表示数组
interface NumberArray {
  [index: number]: number;
}
let fib4: NumberArray = [1, 1, 2, 3, 5];
// NumberArray 表示：只要index的类型是number, 那么值的类型必须是number.


// any在数组中的应用
let list: any[] = ['zpp', 25, 'http://www.baidu.com'];

// 类数组(Array-like Object)不是数组类型，例如：arguments
// function sum(){
//   let args: number[] = arguments;
// }

// 事实上常见的类数组都有自己的接口定义，如 IArguments, NodeList, HTMLCollection 等
function sum() {
  let args: IArguments = arguments;
}
